package cn.tedu.straw.search.repository;

import cn.tedu.straw.search.vo.QuestionSearchVO;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface QuestionRepository extends ElasticsearchRepository<QuestionSearchVO,Long> {
    // 目标：通过关键字查询标题Title或正文Content
    // 关于声明ES API中的查询方法
    // -- 方法的名称必须是JPA风格的，应该尽量通过IntelliJ IDEA的提示来生成方法名称，不要自行编写；
    // -- 搜索的关键字只有1个，而涉及的字段有2个甚至多个，在抽象方法中必须声明与涉及的字段的数量匹配的多个参数
    // -- 使用ES查询得到的结果不可以使用PageHelper实现分页，需要使用SpringData中的分页
    // -- 使用Spring Data分页时，方法的返回结果类型必须是Page<?>类型的，其中的泛型就是查询结果的列表的元素类型
    // -- 使用Spring Data分页时，必须在方法的参数列表的末尾添加Pageable类型的参数，表示分页参数
    Page<QuestionSearchVO> queryByTitleMatchesOrContentMatches(
            String titleKeyword, String contentKeyword, Pageable
            pageable);
}
